#ifndef CSGTREE_H
#define CSGTREE_H

#include <typeinfo>
#include <iostream>
#include <stack>
#include "tree.hh"
#include "csgnode.h"
#include "csgoperation.h"
#include "csgsolid.h"
#include "csgbox.h"
#include "csgcylinder.h"
#include "csgsphere.h"
#include "csgtransformation.h"
#include "csgunion.h"
#include "csgintersection.h"
#include "csgdiff.h"

using namespace std;

typedef tree<CSGNode*> Tree;

class CSGTree
{
public:
    Tree m_csgTree;

    CSGTree();
    double calcScalarFieldValue(XYZ &p);
    double postOrderTraversal(Tree::iterator_base itRoot , XYZ &p);
};

#endif // CSGTREE_H
